/*
 * boid.h
 *
 *  Created on: June 26, 2011
 *      Authors: Lane Aasen, Nikholas Gaffney, Michael Rosenberger, Dylan Swiggett
 */

#include "boidType.h"
#include "vector3D.h"

/*
 * A boid is an arbitrary chemophysically active particle represented by two vectors (location and velocity)
 * along with a volume and a type. The volume field allows stable boids to be combined into larger boids;
 * thereby decreasing rendering and calculatory expenses. The type of a boid determines -among other things-
 * what substances it can react with, and what will be produced by said reaction. Boid does not contain any
 * functions besides an initializer, and instead all boid-related functions are contained in world.
 */
typedef struct {
	Vector3D location, velocity;
	double volume;
	BoidType* type;
} Boid;

/*
 * Constructs and returns a boid created with the provided parameters.
 */
Boid initBoid(Vector3D location, Vector3D velocity, double volume, BoidType* type);
